As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
When booting a computer system in an information handling system, any one of several bootable devices may be utilized to boot the computer system. Certain bootable devices such as floppy disk drives or compact-disk read-only memory (CD-ROM) drives, can emulate or receive controls from a Basic Input-Output System (BIOS). Other example bootable devices, such as devices that rely on a peripheral component interconnect bus (PCI devices) may supply their own boot code. Often, a user may set a boot order for the available bootable devices that the computer will follow during a boot operation. Users expect the boot order to be followed consistently from one boot operation to the next.
Peripheral component devices may include devices compliant with the Peripheral Component Interconnect (PCI), Peripheral Component Interconnect Express (PCIE), and Peripheral Component Interconnect Extended (PCI-X). Typically, an information handling system identifies such peripheral components using a bus/device/function identification system (“bus/dev/fn”) for identifying the location of a particular peripheral component. While the bus/dev/fn system can be useful, in the event that devices are added or removed from the information handling system from one boot to the next the bus/dev/fn identifier of a particular peripheral component device (or a corresponding device slot) may change. In the event that a bus/dev/fn identifier does change between boot operations, a number of problems arise. For example, if the order of bootable devices is specified within a BIOS based on the bus/dev/fn of each device and the system configuration changes, the listed bus/dev/fn identifier will no longer be correct and the bootable devices will not boot in accordance with the BIOS boot specification. Additionally if a configuration error or another run time error occurs, the information handling system may be unable to identify the device which has encountered an error.
Existing methods to uniquely identify PCI devices suffer from a primary disadvantage, namely that the unique signatures that are used are specific to a particular computing platform. Accordingly, the code used to generate such unique signatures must be rewritten for each new system.